IP Library Granted Patent US 10,713,570
Granted Patent B1
US 10,713,570 · App. 16/358,217 · Granted Jul 14, 2020

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 10,713,570
App. No.
16/358,217
Granted
Jul 14, 2020
Kind
B1
Abstract

Techniques are provided for determining labels associated with first and second candidate code and whether those labels are compatible. When the first candidate code and the second candidate code are compatible, third candidate code based is determined on the those two. When the third candidate code meets exit criteria the third candidate code is provided as evolved code. Some embodiments also include causing execution of the evolved code.

Claims (69)

1. 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 a first label associated with functionality of first candidate code;

determining a second label associated with functionality of second candidate code;

determining whether the first candidate code and the second candidate code are compatible for evolution based at least in part on the first label and the second label;

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 label and the second label, evolving third candidate code, using evolutionary programming techniques, based on the first candidate code and second candidate code, wherein the third candidate code differs from both the first candidate code and second candidate code, and contains no more than a subset of code from each of the first candidate code and the second candidate code;

performing a fitness test based at least in part on the third candidate code;

determining whether exit criteria are met based at least in part on the fitness test; and

when the exit criteria are met, providing the third candidate code as evolved code and causing execution of the evolved code,

wherein:

the first candidate code comprises a first set of one or more actions;

the second candidate code comprises a second set of one or more actions;

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

when a first action in the first set of one or more actions is different from a corresponding second action in the second set of one or more actions, evolving a third, evolved action from the first action and the second action; and

including in the third candidate code the third, evolved action.

2. The non-transitory computer readable medium of claim 1 , wherein:

the first candidate code comprises a first context-action pair comprising two or more first context elements;

the second candidate code comprises a second context-action pair comprising two or more second context elements; and

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

when a first context element of the first one or more context elements is different from a corresponding second context element of the second one or more context elements, evolving a third, evolved context element from the first context element and the second context element; and

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

3. The non-transitory computer readable medium of claim 1 , wherein the process further comprises determining a resultant program based at least in part on the third candidate code; determining whether the 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.

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

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

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

5. The non-transitory computer readable medium of claim 3 , wherein the resultant program is executable 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.

6. The non-transitory computer readable medium of claim 3 , wherein determining whether the resultant program meets exit criteria comprises determining whether the resultant program meets exit criteria based at least in part on a fitness measure for the resultant program.

7. The non-transitory computer readable medium of claim 1 , wherein the process further comprises, when the first candidate code and second candidate code are not compatible, evolving the third candidate code based at least in part on first candidate code without the second candidate code.

8. The non-transitory computer readable medium of claim 1 , wherein determining whether the first label and the second label are compatible comprises determining a premetric based at least in part on the first label and the second label.

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

10. The non-transitory computer readable medium of claim 1 , 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.

11. The non-transitory computer readable medium of claim 1 , 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.

12. The non-transitory computer readable medium of claim 1 , wherein the process further comprises selecting the first label based at least in part on access control security associated with the second candidate code.

13. The non-transitory computer readable medium of claim 1 , wherein the first candidate code comprises one or more of a first training context-action pair and first candidate executable code.

14. A method comprising:

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

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 second candidate code, wherein the third candidate code differs from both the first candidate code and second candidate code, and contains no more than a subset of code from each of the first candidate code and the second candidate code;

performing a fitness test based at least in part on the third candidate code;

determining whether exit criteria are met based at least in part on the fitness test; and

when the exit criteria are met, providing the third candidate code as evolved code and causing execution of the evolved code,

wherein:

the first candidate code comprises a first context-action pair comprising two or more first context elements;

the second candidate code comprises a second context-action pair comprising two or more second context elements; and

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

when a first context element of the first one or more context elements is different from a corresponding second context element of the second one or more context elements, 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,

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

15. The method of claim 14 , further comprising,

determining a resultant program based at least in part on the third candidate code; determining whether the exit criteria are met based at least in part on the resultant program; and

when the exit criteria are met, providing the resultant program as an evolved program.

16. A system for executing instructions, wherein said instructions are instructions which, when executed by 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;

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 second candidate code, wherein the third candidate code differs from both the first candidate code and second candidate code, and contains no more than a subset of code from each of the first candidate code and the second candidate code;

performing a fitness test based at least in part on the third candidate code;

determining whether exit criteria are met based at least in part on the fitness test; and

when the exit criteria are met, providing the third candidate code as evolved code and causing execution of the evolved code,

wherein:

the first candidate code comprises a first set of one or more actions;

the second candidate code comprises a second set of one or more actions; and

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

when a first action of the first set of one or more actions is different from a corresponding second action of the second set of one or more actions, evolving a third, evolved action from the first action and the second action:

including in the third candidate code the third, evolved action.

17. The system of claim 16 , wherein:

the first candidate code comprises a first context-action pair comprising two or more first context elements;

the second candidate code comprises a second context-action pair comprising two or more second context elements;

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

when a first context element of the first one or more context elements is different from a corresponding second context element of the second one or more context elements, evolving a third, evolved context element from the first context element and the second context element; and

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

18. The system of claim 16 , wherein the first candidate code is associated with a first set of one 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 one or more labels is compatible with the second set of one or more labels.

19. The system of claim 18 , wherein determining whether the first candidate code and the second candidate code are compatible comprises determining a measure of compatibility based on the first set of one or more labels, the second set of one or more labels, the first candidate code, and the second candidate code.

Assignments (6)
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 Mar 19, 2019
From: HAZARD, CHRISTOPHER JAMES
To: HAZARDOUS SOFTWARE INC.
Reel/Frame 048639/0893 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 19, 2019
From: HAZARDOUS SOFTWARE INC.
To: DIVEPLANE CORPORATION
Reel/Frame 048639/0989 →
Continuity (1)
Continuation In Part 15724637 · Oct 4, 2017
Cited By (4)
US 12,562,152 US 12,657,112 US 12,670,911 US 12,688,033