IP Library Granted Patent US 11,586,934
Granted Patent B1
US 11,586,934 · App. 17/536,981 · Granted Feb 21, 2023

Evolutionary programming techniques utilizing context indications

Inventor: Christopher James Hazard (Raleigh, NC)
Assignee: Diveplane Corporation
G06N3/126G06F8/77G06F21/62
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,586,934
App. No.
17/536,981
Granted
Feb 21, 2023
Kind
B1
Abstract

Techniques are provided for determining compatibility of first and second candidate code based on functionality. When the first candidate code and the second candidate code are compatible, third candidate code based is determined based on the first candidate code and the second candidate code. The third candidate that was determined based on the first candidate code and the second candidate code is then provided.

Claims (75)

1. A method comprising:

determining whether first candidate code and second candidate code are compatible for evolution based at least in part on functionalities of the first candidate code and the second candidate code, wherein:

the first candidate code comprises at least a first context element and a first action;

the second candidate code comprises at least a second context element and a second action, wherein the first context element differs from the second context element:

when the first candidate code and the second candidate code are determined to be compatible for evolution, evolving third candidate code, using evolutionary programming techniques, based on the first candidate code and the second candidate code, wherein the third candidate code differs from both the first candidate code and the second candidate code, and contains no more than a subset of code from each of the first candidate code and the second candidate code;

providing the third candidate code as evolved code,

wherein evolving the third candidate code based on the first candidate code and the second candidate code comprises:

evolving a third, evolved context element from the first context element and the second context element:

including in the third candidate code the third, evolved context element;

when the first action and the second action are identical, including in the second action in the third candidate code,

wherein the method is performed on one or more computing devices.

2. The method of claim 1 , further comprising:

initially receiving a request for evolved code;

providing the third candidate code is provided as the evolved code.

3. The method of claim 1 ,

wherein evolving the third candidate code, using evolutionary programming techniques comprises performing a cross-over of the first candidate code and the second candidate code to produce the third candidate code, wherein the third candidate code contains no more than a subset of the first candidate code and the second candidate code.

4. The method of claim 1 ,

wherein evolving the third candidate code, using evolutionary programming techniques comprises resampling at least a portion of the first candidate code and the second candidate code to produce the third candidate code, wherein the third candidate code contains no more than a subset of the first candidate code and the second candidate code.

5. The method of claim 1 ,

wherein evolving the third candidate code, using evolutionary programming techniques comprises mutating at least a portion of the first candidate code or the second candidate code to produce the third candidate code, wherein the third candidate code contains no more than a subset of the first candidate code and the second candidate code.

6. The method of claim 1 ,

wherein evolving the third candidate code, using evolutionary programming techniques comprises combining the first candidate code and the second candidate code to produce the third candidate code, wherein the third candidate code contains no more than a subset of the first candidate code and the second candidate code.

7. The method of claim 6 ,

wherein evolving the third candidate code, using evolutionary programming techniques comprises combining the first candidate code and the second candidate code to produce the third candidate code, wherein the third candidate code contains at least a subset of the first candidate code, but no more than a subset of the first candidate code and at least a subset of the second candidate code, the second candidate code.

8. A system for executing instructions comprising one or more computing devices, wherein said instructions, when executed by the one or more computing devices, cause performance of a process including:

determining whether first candidate code and second candidate code are compatible for evolution based at least in part on functionalities of the first candidate code and the second candidate code, wherein:

the first candidate code comprises a first action and a first context element;

the second candidate code comprises a second action and a second context element, wherein the first action is different from the second action;

when the first candidate code and the second candidate code are determined to be compatible for evolution, evolving third candidate code, using evolutionary programming techniques, based on the first candidate code and the second candidate code, wherein the third candidate code differs from both the first candidate code and the second candidate code, and contains no more than a subset of code from each of the first candidate code and the second candidate code;

providing the third candidate code,

wherein evolving the third candidate code based on the first candidate code and the second candidate code comprises:

evolving a third, evolved action from the first action and the second action:

including in the third candidate code the third, evolved action; and

when the first context element and the second context element are identical, including the second context element in the third candidate code.

9. The system of claim 8 , further comprising:

initially receiving a request for evolved code;

providing the third candidate code is provided as the evolved code.

10. The system of claim 8 ,

wherein evolving the third candidate code, using evolutionary programming techniques comprises performing a cross-over of the first candidate code and the second candidate code to produce the third candidate code, wherein the third candidate code contains no more than a subset of the first candidate code and the second candidate code.

11. The system of claim 8 ,

wherein evolving the third candidate code, using evolutionary programming techniques comprises resampling at least a portion of the first candidate code and the second candidate code to produce the third candidate code, wherein the third candidate code contains no more than a subset of the first candidate code and the second candidate code.

12. The system of claim 8 ,

wherein evolving the third candidate code, using evolutionary programming techniques comprises mutating at least a portion of the first candidate code or the second candidate code to produce the third candidate code, wherein the third candidate code contains no more than a subset of the first candidate code and the second candidate code.

13. The system of claim 8 ,

wherein evolving the third candidate code, using evolutionary programming techniques comprises combining the first candidate code and the second candidate code to produce the third candidate code, wherein the third candidate code contains no more than a subset of the first candidate code and the second candidate code.

14. A non-transitory computer readable medium, storing instructions which, when executed by one or more computing devices, cause the one or more computing devices to perform a process of:

determining whether first candidate code and second candidate code are compatible for evolution based at least in part on a first functionality of the first candidate code and a second functionality of the second candidate code, wherein:

the first candidate code comprises a first action and at least a first context element;

the second candidate code comprises a second action and at least a second context element, wherein the second action is different from the first action;

when the first candidate code and the second candidate code are determined to be compatible for evolution based at least in part on the first functionality and the second functionality, evolving third candidate code, using evolutionary programming techniques, based on the first candidate code and the second candidate code, wherein the third candidate code differs from both the first candidate code and the second candidate code, and contains no more than a subset of code from each of the first candidate code and the second candidate code;

providing the third candidate code,

wherein evolving the third candidate code based on the first candidate code and the second candidate code comprises:

evolving a third, evolved action from the first action and the second action;

including in the third candidate code the third, evolved action; and

when the first context element and the second context element are identical, including the second context element in the third candidate code.

15. The non-transitory computer readable medium of claim 14 , further comprising:

determining whether exit criteria are met based at least in part on a fitness test performed on the third candidate code, and

only when the exit criteria are met, the third candidate code is provided as evolved code.

16. The non-transitory computer readable medium of claim 14 ,

wherein evolving the third candidate code, using evolutionary programming techniques comprises performing a cross-over of the first candidate code and the second candidate code to produce the third candidate code, wherein the third candidate code contains no more than a subset of the first candidate code and the second candidate code.

17. The non-transitory computer readable medium of claim 14 ,

wherein evolving the third candidate code, using evolutionary programming techniques comprises resampling at least a portion of the first candidate code and the second candidate code to produce the third candidate code, wherein the third candidate code contains no more than a subset of the first candidate code and the second candidate code.

18. The non-transitory computer readable medium of claim 14 ,

wherein evolving the third candidate code, using evolutionary programming techniques comprises mutating at least a portion of the first candidate code or the second candidate code to produce the third candidate code, wherein the third candidate code contains no more than a subset of the first candidate code and the second candidate code.

19. The non-transitory computer readable medium of claim 14 ,

wherein evolving the third candidate code, using evolutionary programming techniques comprises combining the first candidate code and the second candidate code to produce the third candidate code, wherein the third candidate code contains no more than a subset of the first candidate code and the second candidate code.

20. The non-transitory computer readable medium of claim 14 , wherein the process further comprises determining a resultant program based at least in part on the third candidate code; determining whether exit criteria are met based at least in part on the resultant program; and if the exit criteria are met, providing the resultant program as an evolved program.

21. The non-transitory computer readable medium of claim 20 , wherein the process further comprises:

determining whether the second functionality does not occur in a first candidate executable program associated with the first candidate code; and

when the second functionality does not occur in the first candidate executable program, determining the resultant program based at least in part on the second candidate code.

22. The non-transitory computer readable medium of claim 20 , wherein the resultant program is executable code and determining the resultant program comprises determining the resultant program based on the third candidate code and a first candidate executable program associated with the first candidate code.

23. The non-transitory computer readable medium of claim 14 , wherein the first action and the first context element each contain executable code.

24. The non-transitory computer readable medium of claim 14 , wherein determining whether the first candidate code and the second candidate code are compatible comprises determining whether there is an exact match between a first label related to the first candidate code and a second label related to the second candidate code.

25. The non-transitory computer readable medium of claim 24 , wherein determining whether the first candidate code and the second candidate code are compatible comprises determining a measure of compatibility based on the first label, the second label, the first candidate code, and the second candidate code.

26. The non-transitory computer readable medium of claim 14 , wherein the first candidate code is associated with a first set of two or more labels and the second candidate code is associated with a second set of one or more labels, and determining whether the first candidate code and the second candidate code are compatible comprises determining whether the first set of two or more labels is compatible with the second set of one or more labels.

Assignments (8)
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 22, 2025
From: WESTERN ALLIANCE BANK
To: HOWSO INCORPORATED
Reel/Frame 069988/0038 →
CHANGE OF NAME Recorded Sep 28, 2023
From: DIVEPLANE CORPORATION
To: HOWSO INCORPORATED
Reel/Frame 065081/0559 →
CHANGE OF NAME Recorded Sep 22, 2023
From: DIVEPLANE CORPORATION
To: HOWSO INCORPORATED
Reel/Frame 065021/0691 →
SECURITY INTEREST Recorded Jan 31, 2023
From: DIVEPLANE CORPORATION
To: WESTERN ALLIANCE BANK
Reel/Frame 062554/0106 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2022
From: HAZARD, CHRISTOPHER JAMES
To: HAZARDOUS SOFTWARE INC.
Reel/Frame 061582/0228 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2022
From: HAZARDOUS SOFTWARE INC.
To: DIVEPLANE CORPORATION
Reel/Frame 061582/0210 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 7, 2022
From: HAZARD, CHRISTOPHER JAMES
To: HAZARDOUS SOFTWARE INC.
Reel/Frame 060433/0573 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 7, 2022
From: HAZARDOUS SOFTWARE INC.
To: DIVEPLANE CORPORATION
Reel/Frame 060434/0252 →
Continuity (3)
Continuation 16903901 · Jun 17, 2020
Continuation 16358217 · Mar 19, 2019
Continuation In Part 15724637 · Oct 4, 2017